const express = require('express')
//创建路由器对象
const router = express.Router();

const UserModel = require('../db/models/UserModel')
const md5 = require('md5')
const { createToken } = require('../utils/tokenUtils')
const verifyToken = require('../middlewares/verifyToken');

//导入状态码文件
const {RES_CODE} = require('../utils/constants');

//使用解析请求体数据中间件
router.use(express.urlencoded({extended:false}));

//登录请求
router.post('/login',async (req,res)=>{

    let {username,pwd} = req.body;

    //判断前端内容是否为空
    if(!username || !pwd){
        res.json({
            code:RES_CODE.DATA_ERROR,
            message:"请输入账号密码"
        })
    }

    //从数据库中查找与输入框中数据相匹配的值，如果有就说明是我的用户。
    let user =await UserModel.findOne({username,pwd:md5(pwd)});

    if(user){
        //有这个用户

        // 创建token - 只有登录成功之后 才有机会创建token
        let token = createToken({userID:user._id});
        res.json({
            code:RES_CODE.SUCCESS,
            data:{
                token,
                user
            },
            message:"登录成功"
        });
    }else{
        //没有这个用户 - 或者是账号密码错误
        res.json({
            code:RES_CODE.DATA_ERROR,
            message:"登录失败，账号或密码错误"
        });
    } 
});


//获取登录用户信息接口
router.get('/info',verifyToken,async (req,res)=>{

    // 获取用户id ？ - 登录用户的id在什么时候保存的？
    // console.log(req.userID); //是在verifyToken中实现存储的
    //通过用户id去查找数据库用户信息
    let user = await UserModel.findById(req.userID);
    res.json({
        code:RES_CODE.SUCCESS,
        data:user,
        message:"获取用户信息成功"
    });
});

module.exports = router;